If an ArrayIndexOutOfBoundsException
occurs in the try{}
block,
what happens?
Execution of this method stops and the method throws
the ArrayIndexOutOfBoundsException
up to its caller.
(As a nice exercise, add a catch
block to the program for this
type of exception.)
finally{}
block
If an ArrayIndexOutOfBoundsException
occurs this program immediately
looses control.
The Exception
is thrown to the method that called it, which in this case is the
Java run time system.
For this program, execution will halt.
By using a finally{}
block, you can ensure that some statements
will always run, no matter how the try{}
block was exited.
Here is the try/catch/finally
structure.
try { // statements, some of which might // throw an exception } catch ( SomeExceptionType ex ) { // statements to handle this // type of exception } .... // more catch blocks catch ( AnotherExceptionType ex ) { // statements to handle this // type of exception } finally { // statements which will execute no matter // how the try block was exited. } // Statements following the structure
There can only be one finally
block, and it must follow
the catch
blocks.
try
block exits normally (no exceptions occurred), then
control goes directly to
the finally
block.
After the finally
block is executed, the statements following it get control.
try
block exits because of an Exception
which
is handled
by a catch
block, first
that block executes and then control goes to
the finally
block.
After the finally
block is executed
the statements following it get control.
try
block exits because of an Exception
which
is NOT handled
by a catch
block control goes directly to
the finally
block.
After the finally
block is executed
the Exception
is thrown to the caller
and control returns to the caller.
Does the finally{}
block always execute?